{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "import pandas as pd\n",
    "from pprint import pprint\n",
    "from lxml import etree\n",
    "import time\n",
    "import re\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 爬取数据\n",
    " ## 爬1-100页"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "正在爬取第1页的数据\n",
      "正在爬取第2页的数据\n",
      "正在爬取第3页的数据\n",
      "正在爬取第4页的数据\n",
      "正在爬取第5页的数据\n",
      "正在爬取第6页的数据\n",
      "正在爬取第7页的数据\n",
      "正在爬取第8页的数据\n",
      "正在爬取第9页的数据\n",
      "正在爬取第10页的数据\n",
      "正在爬取第11页的数据\n",
      "正在爬取第12页的数据\n",
      "正在爬取第13页的数据\n",
      "正在爬取第14页的数据\n",
      "正在爬取第15页的数据\n",
      "正在爬取第16页的数据\n",
      "正在爬取第17页的数据\n",
      "正在爬取第18页的数据\n",
      "正在爬取第19页的数据\n",
      "正在爬取第20页的数据\n",
      "正在爬取第21页的数据\n",
      "正在爬取第22页的数据\n",
      "正在爬取第23页的数据\n",
      "正在爬取第24页的数据\n",
      "正在爬取第25页的数据\n",
      "正在爬取第26页的数据\n",
      "正在爬取第27页的数据\n",
      "正在爬取第28页的数据\n",
      "正在爬取第29页的数据\n",
      "正在爬取第30页的数据\n",
      "正在爬取第31页的数据\n",
      "正在爬取第32页的数据\n",
      "正在爬取第33页的数据\n",
      "正在爬取第34页的数据\n",
      "正在爬取第35页的数据\n",
      "正在爬取第36页的数据\n",
      "正在爬取第37页的数据\n",
      "正在爬取第38页的数据\n",
      "正在爬取第39页的数据\n",
      "正在爬取第40页的数据\n",
      "正在爬取第41页的数据\n",
      "正在爬取第42页的数据\n",
      "正在爬取第43页的数据\n",
      "正在爬取第44页的数据\n",
      "正在爬取第45页的数据\n",
      "正在爬取第46页的数据\n",
      "正在爬取第47页的数据\n",
      "正在爬取第48页的数据\n",
      "正在爬取第49页的数据\n",
      "正在爬取第50页的数据\n",
      "正在爬取第51页的数据\n",
      "正在爬取第52页的数据\n",
      "正在爬取第53页的数据\n",
      "正在爬取第54页的数据\n",
      "正在爬取第55页的数据\n",
      "正在爬取第56页的数据\n",
      "正在爬取第57页的数据\n",
      "正在爬取第58页的数据\n",
      "正在爬取第59页的数据\n",
      "正在爬取第60页的数据\n",
      "正在爬取第61页的数据\n",
      "正在爬取第62页的数据\n",
      "正在爬取第63页的数据\n",
      "正在爬取第64页的数据\n",
      "正在爬取第65页的数据\n",
      "正在爬取第66页的数据\n",
      "正在爬取第67页的数据\n",
      "正在爬取第68页的数据\n",
      "正在爬取第69页的数据\n",
      "正在爬取第70页的数据\n",
      "正在爬取第71页的数据\n",
      "正在爬取第72页的数据\n",
      "正在爬取第73页的数据\n",
      "正在爬取第74页的数据\n",
      "正在爬取第75页的数据\n",
      "正在爬取第76页的数据\n",
      "正在爬取第77页的数据\n",
      "正在爬取第78页的数据\n",
      "正在爬取第79页的数据\n",
      "正在爬取第80页的数据\n",
      "正在爬取第81页的数据\n",
      "正在爬取第82页的数据\n",
      "正在爬取第83页的数据\n",
      "正在爬取第84页的数据\n",
      "正在爬取第85页的数据\n",
      "正在爬取第86页的数据\n",
      "正在爬取第87页的数据\n",
      "正在爬取第88页的数据\n",
      "正在爬取第89页的数据\n",
      "正在爬取第90页的数据\n",
      "正在爬取第91页的数据\n",
      "正在爬取第92页的数据\n",
      "正在爬取第93页的数据\n",
      "正在爬取第94页的数据\n",
      "正在爬取第95页的数据\n",
      "正在爬取第96页的数据\n",
      "正在爬取第97页的数据\n",
      "正在爬取第98页的数据\n",
      "正在爬取第99页的数据\n",
      "终于爬完了累死了555555\n",
      "正在爬取第1页的数据\n",
      "正在爬取第2页的数据\n",
      "正在爬取第3页的数据\n",
      "正在爬取第4页的数据\n",
      "正在爬取第5页的数据\n",
      "正在爬取第6页的数据\n",
      "正在爬取第7页的数据\n",
      "正在爬取第8页的数据\n",
      "正在爬取第9页的数据\n",
      "正在爬取第10页的数据\n",
      "正在爬取第11页的数据\n",
      "正在爬取第12页的数据\n",
      "正在爬取第13页的数据\n",
      "正在爬取第14页的数据\n",
      "正在爬取第15页的数据\n",
      "正在爬取第16页的数据\n",
      "正在爬取第17页的数据\n",
      "正在爬取第18页的数据\n",
      "正在爬取第19页的数据\n",
      "正在爬取第20页的数据\n",
      "正在爬取第21页的数据\n",
      "正在爬取第22页的数据\n",
      "正在爬取第23页的数据\n",
      "正在爬取第24页的数据\n",
      "正在爬取第25页的数据\n",
      "正在爬取第26页的数据\n",
      "正在爬取第27页的数据\n",
      "正在爬取第28页的数据\n",
      "正在爬取第29页的数据\n",
      "正在爬取第30页的数据\n",
      "正在爬取第31页的数据\n",
      "正在爬取第32页的数据\n",
      "正在爬取第33页的数据\n",
      "正在爬取第34页的数据\n",
      "正在爬取第35页的数据\n",
      "正在爬取第36页的数据\n",
      "正在爬取第37页的数据\n",
      "正在爬取第38页的数据\n",
      "正在爬取第39页的数据\n",
      "正在爬取第40页的数据\n",
      "正在爬取第41页的数据\n",
      "正在爬取第42页的数据\n",
      "正在爬取第43页的数据\n",
      "正在爬取第44页的数据\n",
      "正在爬取第45页的数据\n",
      "正在爬取第46页的数据\n",
      "正在爬取第47页的数据\n",
      "正在爬取第48页的数据\n",
      "正在爬取第49页的数据\n",
      "正在爬取第50页的数据\n",
      "正在爬取第51页的数据\n",
      "正在爬取第52页的数据\n",
      "正在爬取第53页的数据\n",
      "正在爬取第54页的数据\n",
      "正在爬取第55页的数据\n",
      "正在爬取第56页的数据\n",
      "正在爬取第57页的数据\n",
      "正在爬取第58页的数据\n",
      "正在爬取第59页的数据\n",
      "正在爬取第60页的数据\n",
      "正在爬取第61页的数据\n",
      "正在爬取第62页的数据\n",
      "正在爬取第63页的数据\n",
      "正在爬取第64页的数据\n",
      "正在爬取第65页的数据\n",
      "正在爬取第66页的数据\n",
      "正在爬取第67页的数据\n",
      "正在爬取第68页的数据\n",
      "正在爬取第69页的数据\n",
      "正在爬取第70页的数据\n",
      "正在爬取第71页的数据\n",
      "正在爬取第72页的数据\n",
      "正在爬取第73页的数据\n",
      "正在爬取第74页的数据\n",
      "正在爬取第75页的数据\n",
      "正在爬取第76页的数据\n",
      "正在爬取第77页的数据\n",
      "正在爬取第78页的数据\n",
      "正在爬取第79页的数据\n",
      "正在爬取第80页的数据\n",
      "正在爬取第81页的数据\n",
      "正在爬取第82页的数据\n",
      "正在爬取第83页的数据\n",
      "正在爬取第84页的数据\n",
      "正在爬取第85页的数据\n",
      "正在爬取第86页的数据\n",
      "正在爬取第87页的数据\n",
      "正在爬取第88页的数据\n",
      "正在爬取第89页的数据\n",
      "正在爬取第90页的数据\n",
      "正在爬取第91页的数据\n",
      "正在爬取第92页的数据\n",
      "正在爬取第93页的数据\n",
      "正在爬取第94页的数据\n",
      "正在爬取第95页的数据\n",
      "正在爬取第96页的数据\n",
      "正在爬取第97页的数据\n",
      "正在爬取第98页的数据\n",
      "正在爬取第99页的数据\n",
      "终于爬完了累死了555555\n"
     ]
    }
   ],
   "source": [
    "# 爬取1-100页\n",
    "for i in range(1,100):\n",
    "    print(\"正在爬取第\" + str(i) + \"页的数据\")\n",
    "    url_pre = \"https://search.51job.com/list/030200,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE,2,\"\n",
    "    url_end = \".html?\"\n",
    "    url = url_pre + str(i) + url_end\n",
    "    \n",
    "    headers = {\n",
    "        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'\n",
    "    }\n",
    "    \n",
    "    web = requests.get(url, headers=headers)\n",
    "    web.encoding = \"gbk\"\n",
    "    \n",
    "    dom = etree.HTML(web.text)\n",
    "    \n",
    "    # XPATH上线\n",
    "    # 1、岗位名称\n",
    "    job_name = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]//p/span/a[@target=\"_blank\"]/@title')\n",
    "    # 2、公司名称\n",
    "    company_name = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t2\"]/a[@target=\"_blank\"]/@title')\n",
    "    # 3、工作地点\n",
    "    address = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t3\"]/text()')\n",
    "    # 4、工资\n",
    "    salary_mid = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t4\"]')\n",
    "    salary = [i.text for i in salary_mid]\n",
    "    # 5、发布日期\n",
    "    release_time = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t5\"]/text()')\n",
    "    # 6、获取二级网址url\n",
    "    deep_url = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]//p/span/a[@target=\"_blank\"]/@href')\n",
    "    \n",
    "    # 创建列表\n",
    "    RandomAll = []\n",
    "    JobDescribe = []\n",
    "    CompanyType = []\n",
    "    CompanySize = []\n",
    "    Industry = []\n",
    "    \n",
    "    # 进入详细页（6中取得的二级网址）爬取更多信息\n",
    "    for i in range(len(deep_url)):\n",
    "        web_test = requests.get(deep_url[i], headers=headers)\n",
    "        web_test.encoding = \"gbk\"\n",
    "        dom_test = etree.HTML(web_test.text)\n",
    "        \n",
    "        # 7、爬取经验、学历信息，先合在一个字段里面，以后再做数据清洗。命名为random_all\n",
    "        random_all = dom_test.xpath('//div[@class=\"tHeader tHjob\"]//div[@class=\"cn\"]/p[@class=\"msg ltype\"]/text()')\n",
    "        # 8、岗位描述性息\n",
    "        job_describe = dom_test.xpath('//div[@class=\"tBorderTop_box\"]//div[@class=\"bmsg job_msg inbox\"]/p/text()')\n",
    "        # 9、公司类型\n",
    "        company_type = dom_test.xpath('//div[@class=\"tCompany_sidebar\"]//div[@class=\"com_tag\"]/p[1]/@title')\n",
    "        # 10、公司规模(人数)\n",
    "        company_size = dom_test.xpath('//div[@class=\"tCompany_sidebar\"]//div[@class=\"com_tag\"]/p[2]/@title')\n",
    "        # 11、所属行业(公司)\n",
    "        industry = dom_test.xpath('//div[@class=\"tCompany_sidebar\"]//div[@class=\"com_tag\"]/p[3]/@title')\n",
    "        \n",
    "        # 将上述信息保存到各自的列表中\n",
    "        RandomAll.append(random_all)\n",
    "        JobDescribe.append(job_describe)\n",
    "        CompanyType.append(company_type)\n",
    "        CompanySize.append(company_size)\n",
    "        Industry.append(industry)\n",
    "        \n",
    "        # 为了反爬，设置睡眠时间\n",
    "        time.sleep(0.5)\n",
    "        \n",
    "    # 每页都要暂存，防止中途发生错误数据丢失\n",
    "    df = pd.DataFrame()\n",
    "    df[\"岗位名称\"] = job_name\n",
    "    df[\"公司名称\"] = company_name\n",
    "    df[\"工作地点\"] = address\n",
    "    df[\"工资\"] = salary\n",
    "    df[\"发布日期\"] = release_time\n",
    "    df[\"经验、学历\"] = RandomAll\n",
    "    df[\"公司类型\"] = CompanyType\n",
    "    df[\"公司规模\"] = CompanySize\n",
    "    df[\"所属行业\"] = Industry\n",
    "    df[\"岗位描述\"] = JobDescribe\n",
    "    \n",
    "    # 这里在写出过程中，有可能会写入失败，为了解决这个问题，我们使用异常处理。\n",
    "    try:\n",
    "        df.to_csv(\"job_info.csv\", mode=\"a+\", header=None, index=None, encoding=\"gbk\")\n",
    "    except:\n",
    "        print(\"当页数据写入失败\")\n",
    "    time.sleep(1)\n",
    "    \n",
    "print(\"终于爬完了累死了555555\")   # 爬取1-100页\n",
    "for i in range(1,100):\n",
    "    print(\"正在爬取第\" + str(i) + \"页的数据\")\n",
    "    url_pre = \"https://search.51job.com/list/030200,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE,2,\"\n",
    "    url_end = \".html?\"\n",
    "    url = url_pre + str(i) + url_end\n",
    "    \n",
    "    headers = {\n",
    "        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'\n",
    "    }\n",
    "    \n",
    "    web = requests.get(url, headers=headers)\n",
    "    web.encoding = \"gbk\"\n",
    "    \n",
    "    dom = etree.HTML(web.text)\n",
    "    \n",
    "    # XPATH上线\n",
    "    # 1、岗位名称\n",
    "    job_name = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]//p/span/a[@target=\"_blank\"]/@title')\n",
    "    # 2、公司名称\n",
    "    company_name = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t2\"]/a[@target=\"_blank\"]/@title')\n",
    "    # 3、工作地点\n",
    "    address = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t3\"]/text()')\n",
    "    # 4、工资\n",
    "    salary_mid = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t4\"]')\n",
    "    salary = [i.text for i in salary_mid]\n",
    "    # 5、发布日期\n",
    "    release_time = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]/span[@class=\"t5\"]/text()')\n",
    "    # 6、获取二级网址url\n",
    "    deep_url = dom.xpath('//div[@class=\"dw_table\"]/div[@class=\"el\"]//p/span/a[@target=\"_blank\"]/@href')\n",
    "    \n",
    "    # 创建列表\n",
    "    RandomAll = []\n",
    "    JobDescribe = []\n",
    "    CompanyType = []\n",
    "    CompanySize = []\n",
    "    Industry = []\n",
    "    \n",
    "    # 进入详细页（6中取得的二级网址）爬取更多信息\n",
    "    for i in range(len(deep_url)):\n",
    "        web_test = requests.get(deep_url[i], headers=headers)\n",
    "        web_test.encoding = \"gbk\"\n",
    "        dom_test = etree.HTML(web_test.text)\n",
    "        \n",
    "        # 7、爬取经验、学历信息，先合在一个字段里面，以后再做数据清洗。命名为random_all\n",
    "        random_all = dom_test.xpath('//div[@class=\"tHeader tHjob\"]//div[@class=\"cn\"]/p[@class=\"msg ltype\"]/text()')\n",
    "        # 8、岗位描述性息\n",
    "        job_describe = dom_test.xpath('//div[@class=\"tBorderTop_box\"]//div[@class=\"bmsg job_msg inbox\"]/p/text()')\n",
    "        # 9、公司类型\n",
    "        company_type = dom_test.xpath('//div[@class=\"tCompany_sidebar\"]//div[@class=\"com_tag\"]/p[1]/@title')\n",
    "        # 10、公司规模(人数)\n",
    "        company_size = dom_test.xpath('//div[@class=\"tCompany_sidebar\"]//div[@class=\"com_tag\"]/p[2]/@title')\n",
    "        # 11、所属行业(公司)\n",
    "        industry = dom_test.xpath('//div[@class=\"tCompany_sidebar\"]//div[@class=\"com_tag\"]/p[3]/@title')\n",
    "        \n",
    "        # 将上述信息保存到各自的列表中\n",
    "        RandomAll.append(random_all)\n",
    "        JobDescribe.append(job_describe)\n",
    "        CompanyType.append(company_type)\n",
    "        CompanySize.append(company_size)\n",
    "        Industry.append(industry)\n",
    "        \n",
    "        # 为了反爬，设置睡眠时间\n",
    "        time.sleep(0.5)\n",
    "        \n",
    "    # 每页都要暂存，防止中途发生错误数据丢失\n",
    "    df = pd.DataFrame()\n",
    "    df[\"岗位名称\"] = job_name\n",
    "    df[\"公司名称\"] = company_name\n",
    "    df[\"工作地点\"] = address\n",
    "    df[\"工资\"] = salary\n",
    "    df[\"发布日期\"] = release_time\n",
    "    df[\"经验、学历\"] = RandomAll\n",
    "    df[\"公司类型\"] = CompanyType\n",
    "    df[\"公司规模\"] = CompanySize\n",
    "    df[\"所属行业\"] = Industry\n",
    "    df[\"岗位描述\"] = JobDescribe\n",
    "    \n",
    "    # 这里在写出过程中，有可能会写入失败，为了解决这个问题，我们使用异常处理。\n",
    "    try:\n",
    "        df.to_csv(\"job_info.csv\", mode=\"a+\", header=None, index=None, encoding=\"gbk\")\n",
    "    except:\n",
    "        print(\"当页数据写入失败\")\n",
    "    time.sleep(1)\n",
    "    \n",
    "print(\"终于爬完了累死了555555\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据存储"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据处理\n",
    "\n",
    "df = pd.read_csv(r\"./job_info.csv\",engine=\"python\",header=None,encoding='gbk')\n",
    "# 为数据框指定行索引\n",
    "df.index = range(len(df))\n",
    "# 为数据框指定列索引\n",
    "df.columns = [\"岗位名\",\"公司名\",\"工作地点\",\"工资\",\"发布日期\",\"经验与学历\",\"公司类型\",\"公司规模\",\"行业\",\"工作描述\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>岗位名</th>\n",
       "      <th>公司名</th>\n",
       "      <th>工作地点</th>\n",
       "      <th>工资</th>\n",
       "      <th>发布日期</th>\n",
       "      <th>经验与学历</th>\n",
       "      <th>公司类型</th>\n",
       "      <th>公司规模</th>\n",
       "      <th>行业</th>\n",
       "      <th>工作描述</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>数据库工程师</td>\n",
       "      <td>综合平台开发运营中心</td>\n",
       "      <td>广州</td>\n",
       "      <td>NaN</td>\n",
       "      <td>07-15</td>\n",
       "      <td>['广州\\xa0\\xa0', '\\xa0\\xa0硕士\\xa0\\xa0', '\\xa0\\xa0...</td>\n",
       "      <td>['国企']</td>\n",
       "      <td>['']</td>\n",
       "      <td>['通信/电信运营、增值服务']</td>\n",
       "      <td>['1、负责数据库的日常施工支撑和性能优化工作；', '2、负责公司产品线的大型分布式数据库...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>大数据开发</td>\n",
       "      <td>联通（广东）产业互联网有限公司</td>\n",
       "      <td>广州</td>\n",
       "      <td>NaN</td>\n",
       "      <td>07-15</td>\n",
       "      <td>['广州\\xa0\\xa0', '\\xa0\\xa0本科\\xa0\\xa0', '\\xa0\\xa0...</td>\n",
       "      <td>['国企']</td>\n",
       "      <td>['']</td>\n",
       "      <td>['通信/电信运营、增值服务']</td>\n",
       "      <td>['职位描述：', '以下职位方向可选其一：', '1.负责大数据平台及产品的研发工作；',...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>23元/时  数据线质检  无需经验</td>\n",
       "      <td>广州遂昌电子科技有限公司</td>\n",
       "      <td>广州-黄埔区</td>\n",
       "      <td>6-8千/月</td>\n",
       "      <td>07-15</td>\n",
       "      <td>['广州-黄埔区\\xa0\\xa0', '\\xa0\\xa0无需经验\\xa0\\xa0', '\\x...</td>\n",
       "      <td>['民营公司']</td>\n",
       "      <td>['500-1000人']</td>\n",
       "      <td>['电子技术/半导体/集成电路,通信/电信/网络设备']</td>\n",
       "      <td>['本公司主要生产较新上市的手机和电脑配件', '穿普通工衣上班，做事轻松，不是流水线，全部...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>数据线质检员 22元一小时</td>\n",
       "      <td>广州遂昌电子科技有限公司</td>\n",
       "      <td>广州-黄埔区</td>\n",
       "      <td>6-8千/月</td>\n",
       "      <td>07-15</td>\n",
       "      <td>['广州-黄埔区\\xa0\\xa0', '\\xa0\\xa0无需经验\\xa0\\xa0', '\\x...</td>\n",
       "      <td>['民营公司']</td>\n",
       "      <td>['500-1000人']</td>\n",
       "      <td>['电子技术/半导体/集成电路,机械/设备/重工']</td>\n",
       "      <td>['无需面试，暑假工，社会工都可以做', '直接到厂面试！！！', '因新开产线，需要大量补...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>唯品会（中国）有限公司</td>\n",
       "      <td>广州-荔湾区</td>\n",
       "      <td>1.5-3万/月</td>\n",
       "      <td>07-15</td>\n",
       "      <td>['广州-荔湾区\\xa0\\xa0', '\\xa0\\xa05-7年经验\\xa0\\xa0', '...</td>\n",
       "      <td>['上市公司']</td>\n",
       "      <td>['10000人以上']</td>\n",
       "      <td>['互联网/电子商务']</td>\n",
       "      <td>['职位描述:', '1、\\xa0配合业务发展与规划，对各部门进行数据需求支持，挖掘分析主题...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  岗位名              公司名    工作地点        工资   发布日期  \\\n",
       "0              数据库工程师       综合平台开发运营中心      广州       NaN  07-15   \n",
       "1               大数据开发  联通（广东）产业互联网有限公司      广州       NaN  07-15   \n",
       "2  23元/时  数据线质检  无需经验     广州遂昌电子科技有限公司  广州-黄埔区    6-8千/月  07-15   \n",
       "3       数据线质检员 22元一小时     广州遂昌电子科技有限公司  广州-黄埔区    6-8千/月  07-15   \n",
       "4             高级数据分析师      唯品会（中国）有限公司  广州-荔湾区  1.5-3万/月  07-15   \n",
       "\n",
       "                                               经验与学历      公司类型           公司规模  \\\n",
       "0  ['广州\\xa0\\xa0', '\\xa0\\xa0硕士\\xa0\\xa0', '\\xa0\\xa0...    ['国企']           ['']   \n",
       "1  ['广州\\xa0\\xa0', '\\xa0\\xa0本科\\xa0\\xa0', '\\xa0\\xa0...    ['国企']           ['']   \n",
       "2  ['广州-黄埔区\\xa0\\xa0', '\\xa0\\xa0无需经验\\xa0\\xa0', '\\x...  ['民营公司']  ['500-1000人']   \n",
       "3  ['广州-黄埔区\\xa0\\xa0', '\\xa0\\xa0无需经验\\xa0\\xa0', '\\x...  ['民营公司']  ['500-1000人']   \n",
       "4  ['广州-荔湾区\\xa0\\xa0', '\\xa0\\xa05-7年经验\\xa0\\xa0', '...  ['上市公司']   ['10000人以上']   \n",
       "\n",
       "                             行业  \\\n",
       "0              ['通信/电信运营、增值服务']   \n",
       "1              ['通信/电信运营、增值服务']   \n",
       "2  ['电子技术/半导体/集成电路,通信/电信/网络设备']   \n",
       "3    ['电子技术/半导体/集成电路,机械/设备/重工']   \n",
       "4                  ['互联网/电子商务']   \n",
       "\n",
       "                                                工作描述  \n",
       "0  ['1、负责数据库的日常施工支撑和性能优化工作；', '2、负责公司产品线的大型分布式数据库...  \n",
       "1  ['职位描述：', '以下职位方向可选其一：', '1.负责大数据平台及产品的研发工作；',...  \n",
       "2  ['本公司主要生产较新上市的手机和电脑配件', '穿普通工衣上班，做事轻松，不是流水线，全部...  \n",
       "3  ['无需面试，暑假工，社会工都可以做', '直接到厂面试！！！', '因新开产线，需要大量补...  \n",
       "4  ['职位描述:', '1、\\xa0配合业务发展与规划，对各部门进行数据需求支持，挖掘分析主题...  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# # 数据处理\n",
    " 岗位名处理（去重）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "去重之前的记录数 (5849, 10)\n",
      "去重之后的记录数 (4638, 10)\n"
     ]
    }
   ],
   "source": [
    "# 去重之前的记录数\n",
    "print(\"去重之前的记录数\",df.shape)\n",
    "# 记录去重\n",
    "df.drop_duplicates(subset=[\"公司名\",\"岗位名\"],inplace=True)\n",
    "# 去重之后的记录数\n",
    "print(\"去重之后的记录数\",df.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "数据分析师             92\n",
       "大数据开发工程师          51\n",
       "数据专员              44\n",
       "仓库管理员             38\n",
       "数据文员              28\n",
       "                  ..\n",
       "业务分析经理（数据运营）       1\n",
       "金科大数据平台 高级项目经理     1\n",
       "APP/公众号运营推广专员      1\n",
       "街道项目经理             1\n",
       "公众号运营专员            1\n",
       "Name: 岗位名, Length: 3217, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 岗位名筛选（还有带英文名的进行统一）\n",
    "\n",
    "display(df[\"岗位名\"].value_counts())\n",
    "\n",
    "df[\"岗位名\"] = df[\"岗位名\"].apply(lambda x:x.lower())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2509, 10)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 岗位筛选分析\n",
    "import numpy as np\n",
    "\n",
    "# job_info.shape\n",
    "\n",
    "target_job = ['算法', '开发', '分析', '工程师', '数据', '运营', '运维','产品']\n",
    "index = [df[\"岗位名\"].str.count(i) for i in target_job]\n",
    "index = np.array(index).sum(axis=0) > 0\n",
    "job_info = df[index]\n",
    "job_info.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "job_list = ['数据分析', \"数据统计\",\"数据专员\",'数据挖掘', '算法',\n",
    "            '大数据','开发工程师', '运营', '软件工程', '前端开发',\n",
    "            '深度学习', 'ai', '数据库', '数据库', '数据产品',\n",
    "            '客服', 'java', '.net', 'andrio', '人工智能', 'c++',\n",
    "            '数据管理',\"测试\",\"运维\"]\n",
    "job_list = np.array(job_list)\n",
    "def rename(x=None,job_list=job_list):\n",
    "    index = [i in x for i in job_list]\n",
    "    if sum(index) > 0:\n",
    "        return job_list[index][0]\n",
    "    else:\n",
    "        return x\n",
    "job_info[\"岗位名\"] = job_info[\"岗位名\"].apply(rename)\n",
    "job_info[\"岗位名\"].value_counts()\n",
    "# 数据统计、数据专员、数据分析统一归为数据分析\n",
    "job_info[\"岗位名\"] = job_info[\"岗位名\"].apply(lambda x:re.sub(\"数据专员\",\"数据分析\",x))\n",
    "job_info[\"岗位名\"] = job_info[\"岗位名\"].apply(lambda x:re.sub(\"数据统计\",\"数据分析\",x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 工资处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "job_info[\"工资\"].str[-1].value_counts()\n",
    "job_info[\"工资\"].str[-3].value_counts()\n",
    "\n",
    "index1 = job_info[\"工资\"].str[-1].isin([\"年\",\"月\"])\n",
    "index2 = job_info[\"工资\"].str[-3].isin([\"万\",\"千\"])\n",
    "job_info = job_info[index1 & index2]\n",
    "\n",
    "def get_money_max_min(x):\n",
    "    try:\n",
    "        if x[-3] == \"万\":\n",
    "            z = [float(i)*10000 for i in re.findall(\"[0-9]+\\.?[0-9]*\",x)]\n",
    "        elif x[-3] == \"千\":\n",
    "            z = [float(i) * 1000 for i in re.findall(\"[0-9]+\\.?[0-9]*\", x)]\n",
    "        if x[-1] == \"年\":\n",
    "            z = [i/12 for i in z]\n",
    "        return z\n",
    "    except:\n",
    "        return x\n",
    "\n",
    "salary = job_info[\"工资\"].apply(get_money_max_min)\n",
    "job_info[\"最低工资\"] = salary.str[0]\n",
    "job_info[\"最高工资\"] = salary.str[1]\n",
    "job_info[\"工资水平\"] = job_info[[\"最低工资\",\"最高工资\"]].mean(axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 公司类型处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "job_info.loc[job_info[\"公司类型\"].apply(lambda x:len(x)<6),\"公司类型\"] = np.nan\n",
    "job_info[\"公司类型\"] = job_info[\"公司类型\"].str[2:-2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 行业处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "job_info[\"行业\"] = job_info[\"行业\"].apply(lambda x:re.sub(\",\",\"/\",x))\n",
    "job_info.loc[job_info[\"行业\"].apply(lambda x:len(x)<6),\"行业\"] = np.nan\n",
    "job_info[\"行业\"] = job_info[\"行业\"].str[2:-2].str.split(\"/\").str[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 学历经验处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "job_info[\"学历\"] = job_info[\"经验与学历\"].apply(lambda x:re.findall(\"本科|大专|应届生|在校生|硕士\",x))\n",
    "def func(x):\n",
    "    if len(x) == 0:\n",
    "        return np.nan\n",
    "    elif len(x) == 1 or len(x) == 2:\n",
    "        return x[0]\n",
    "    else:\n",
    "        return x[2]\n",
    "job_info[\"学历\"] = job_info[\"学历\"].apply(func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 公司规模处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def func(x):\n",
    "    if x == \"['少于50人']\":\n",
    "        return \"<50\"\n",
    "    elif x == \"['50-150人']\":\n",
    "        return \"50-150\"\n",
    "    elif x == \"['150-500人']\":\n",
    "        return '150-500'\n",
    "    elif x == \"['500-1000人']\":\n",
    "        return '500-1000'\n",
    "    elif x == \"['1000-5000人']\":\n",
    "        return '1000-5000'\n",
    "    elif x == \"['5000-10000人']\":\n",
    "        return '5000-10000'\n",
    "    elif x == \"['10000人以上']\":\n",
    "        return \">10000\"\n",
    "    else:\n",
    "        return np.nan\n",
    "job_info[\"公司规模\"] = job_info[\"公司规模\"].apply(func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 清洗后存储数据为新表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "列名 = [\"公司名\",\"岗位名\",\"工作地点\",\"工资水平\",\"发布日期\",\"学历\",\"公司类型\",\"公司规模\",\"行业\",\"工作描述\"]\n",
    "df_清洗后 = job_info[列名]\n",
    "df_清洗后.fillna(value='无')\n",
    "df_清洗后.to_excel(r\"./清洗后job_info.xlsx\",encoding=\"gbk\",index=None)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读取\n",
    "df_清洗后=pd.read_excel('./清洗后job_info.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>公司名</th>\n",
       "      <th>岗位名</th>\n",
       "      <th>工作地点</th>\n",
       "      <th>工资水平</th>\n",
       "      <th>发布日期</th>\n",
       "      <th>学历</th>\n",
       "      <th>公司类型</th>\n",
       "      <th>公司规模</th>\n",
       "      <th>行业</th>\n",
       "      <th>工作描述</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>2465</td>\n",
       "      <td>2465</td>\n",
       "      <td>2465</td>\n",
       "      <td>2465.000000</td>\n",
       "      <td>2465</td>\n",
       "      <td>2198</td>\n",
       "      <td>2460</td>\n",
       "      <td>2447</td>\n",
       "      <td>2461</td>\n",
       "      <td>2465</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>2414</td>\n",
       "      <td>512</td>\n",
       "      <td>13</td>\n",
       "      <td>NaN</td>\n",
       "      <td>56</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>7</td>\n",
       "      <td>56</td>\n",
       "      <td>2256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>广东鑫盛弘创资产管理有限公司</td>\n",
       "      <td>运营</td>\n",
       "      <td>广州-天河区</td>\n",
       "      <td>NaN</td>\n",
       "      <td>07-15</td>\n",
       "      <td>大专</td>\n",
       "      <td>民营公司</td>\n",
       "      <td>50-150</td>\n",
       "      <td>互联网</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>10</td>\n",
       "      <td>708</td>\n",
       "      <td>677</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1311</td>\n",
       "      <td>1223</td>\n",
       "      <td>1923</td>\n",
       "      <td>778</td>\n",
       "      <td>475</td>\n",
       "      <td>190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10094.235970</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11457.782742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1750.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6000.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8000.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12500.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>500000.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   公司名   岗位名    工作地点           工资水平   发布日期    学历  公司类型  \\\n",
       "count             2465  2465    2465    2465.000000   2465  2198  2460   \n",
       "unique            2414   512      13            NaN     56     4    10   \n",
       "top     广东鑫盛弘创资产管理有限公司    运营  广州-天河区            NaN  07-15    大专  民营公司   \n",
       "freq                10   708     677            NaN   1311  1223  1923   \n",
       "mean               NaN   NaN     NaN   10094.235970    NaN   NaN   NaN   \n",
       "std                NaN   NaN     NaN   11457.782742    NaN   NaN   NaN   \n",
       "min                NaN   NaN     NaN    1750.000000    NaN   NaN   NaN   \n",
       "25%                NaN   NaN     NaN    6000.000000    NaN   NaN   NaN   \n",
       "50%                NaN   NaN     NaN    8000.000000    NaN   NaN   NaN   \n",
       "75%                NaN   NaN     NaN   12500.000000    NaN   NaN   NaN   \n",
       "max                NaN   NaN     NaN  500000.000000    NaN   NaN   NaN   \n",
       "\n",
       "          公司规模    行业  工作描述  \n",
       "count     2447  2461  2465  \n",
       "unique       7    56  2256  \n",
       "top     50-150   互联网    []  \n",
       "freq       778   475   190  \n",
       "mean       NaN   NaN   NaN  \n",
       "std        NaN   NaN   NaN  \n",
       "min        NaN   NaN   NaN  \n",
       "25%        NaN   NaN   NaN  \n",
       "50%        NaN   NaN   NaN  \n",
       "75%        NaN   NaN   NaN  \n",
       "max        NaN   NaN   NaN  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看看\n",
    "df_清洗后.describe(include=\"all\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 行业需## 求统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "行业=df_清洗后.行业\n",
    "# 行业"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "行业\n",
       "互联网                  475\n",
       "计算机软件                400\n",
       "快速消费品(食品、饮料、化妆品)     157\n",
       "贸易                   140\n",
       "服装                   135\n",
       "计算机服务(系统、数据服务、维修)     99\n",
       "通信                    93\n",
       "专业服务(咨询、人力资源、财会)      68\n",
       "电子技术                  67\n",
       "批发                    59\n",
       "dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "行业数统计=df_清洗后.groupby(by='行业').size().sort_values(ascending=False).head(10)\n",
    "display(行业数统计)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 中文怎么还不行烦死了烦死了烦死了\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x24def3d9310>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "行业数统计.plot(figsize=(10,10),fontsize='14',kind='bar',title='广州市数据相关各行业需求',grid=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 岗位数量统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "岗位=df_清洗后.岗位名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "岗位名\n",
       "运营       708\n",
       "数据分析     557\n",
       "大数据      187\n",
       "开发工程师    164\n",
       "数据库       66\n",
       "运维        32\n",
       "数据管理      29\n",
       "数据文员      28\n",
       "测试        25\n",
       "数据产品      17\n",
       "dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "岗位统计=df_清洗后.groupby(by='岗位名').size().sort_values(ascending=False).head(10)\n",
    "display(岗位统计)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x24defd80850>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "岗位统计.plot(figsize=(14,7),\\\n",
    "             kind='bar',\\\n",
    "             color='yellowgreen',\\\n",
    "             title='广州市数据相关各岗位数量',\\\n",
    "             fontsize='17',\\\n",
    "             grid=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 岗位薪资水平（取平均值）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 岗位薪资水平（取平均）\n",
    "岗位薪资=df_清洗后.groupby(by='岗位名').agg({\"工资水平\":[\"mean\"]}).sort_values(by=(\"工资水平\",\"mean\"),ascending=False).reset_index().head(10)#.iloc[7:17]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>岗位名</th>\n",
       "      <th>工资水平</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>数据中心总经理</td>\n",
       "      <td>500000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>数据中心营运总监</td>\n",
       "      <td>45833.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>数据总监</td>\n",
       "      <td>37500.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>博士后研究员（数据传输与交换）</td>\n",
       "      <td>36666.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>群益科技--数据中心经理（社会招聘）</td>\n",
       "      <td>35000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>高级web 全栈开发</td>\n",
       "      <td>30000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>数据模型工程师：</td>\n",
       "      <td>30000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>销售工程师（弹性时间、各项福利、底薪+奖金）</td>\n",
       "      <td>29166.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>数据架构师（数据中台方向）</td>\n",
       "      <td>27500.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>数据技术研究员</td>\n",
       "      <td>27500.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      岗位名           工资水平\n",
       "                                    mean\n",
       "0                 数据中心总经理  500000.000000\n",
       "1                数据中心营运总监   45833.333333\n",
       "2                    数据总监   37500.000000\n",
       "3         博士后研究员（数据传输与交换）   36666.666667\n",
       "4      群益科技--数据中心经理（社会招聘）   35000.000000\n",
       "5              高级web 全栈开发   30000.000000\n",
       "6                数据模型工程师：   30000.000000\n",
       "7  销售工程师（弹性时间、各项福利、底薪+奖金）   29166.666667\n",
       "8           数据架构师（数据中台方向）   27500.000000\n",
       "9                 数据技术研究员   27500.000000"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看平均薪资\n",
    "岗位薪资"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['数据中心总经理',\n",
       " '数据中心营运总监',\n",
       " '数据总监',\n",
       " '博士后研究员',\n",
       " '群益科技--数据中心经理',\n",
       " '高级web 全栈开发',\n",
       " '数据模型工程师：',\n",
       " '销售工程师',\n",
       " '数据架构师',\n",
       " '数据技术研究员']"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 处理下岗位名‘（）’里的不要🙅\n",
    "a=岗位薪资['岗位名'].to_list()\n",
    "b=[]\n",
    "for i in a:\n",
    "    b.append(str(i).split('（'))\n",
    "# print(b)\n",
    "岗位名_处理=[]\n",
    "for x in b:\n",
    "    岗位名_处理.append(x[0])\n",
    "岗位名_处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yezatQs/P78qfS7GVFd2uZpfmezsbN5//31uueWWM24rIhw5coSCggKOHTtGzZo1vW+exfcFBQUcP34cz8W2T8YBjhw54o2Xdbbla9asib+/PwD5+fkUFRWdUpeqcuzYMW+ZOnXqeJdL1iUi1KlTB/AcvZ04ceKM7QcGBuLn57kebV5eXqnnVZXPxZhfO0s21cTEiRP505/+hI9P6T/pX//6V5KSkrj55pvZv38/AAMGDKB27dqEhIQQHh7OXXfdRaNGjbxlevbsSXBwMHXr1mXAgAHe+NNPP01UVBR33303s2bNOm1fzrb8jh07SEpKonnz5txzzz2ljgRGjhzJb37zGzZu3MiECRO88TfffJPY2Fh69+7NnDlzvPHCwkJSUlIIDg6me/futG/f3rtuypQpNG/enFdeeYU//OEP3vjKlStJSEggMTGR5557zpt8qvq5GPNrZsmmGnjvvfcIDg6mbdu2peLjxo1j8+bNZGRkEBISwp133gl4zlP4+vqya9cutm7dysyZM9myZYu33EcffUROTg75+fksXbrUGx8/fjybN2/m0UcfZfr06d542XMlHTp0ICcnh08//ZRWrVqRkpJCREQEf//739m8eTN33XUXcXFx3nMlDz/8MGvWrGHTpk0888wzxMXFER0dzW233cacOXPYtWsXrVq1onPnzkRHR9O+fXvatGnDxo0bWbhwYalzK+PGjaOwsJDg4GD+9re/ERERQUJCAnfffTcPP/wwO3bsoGvXrrRp08abYJKTk/n222/573//y9ixY4mJiSE2NpZ//etf3n2xefNmIiMjSUhI4Prrry93Xxw/fpyHHnqIvLw8QkNDeeKJJ9i9ezcAr732GvHx8d7yxbZv306PHj2Ii4sjPj6e77//HvAczU2ZMoVWrVoRFxdXKqEtW7bMe17oiiuu8MZ/+uknBgwYQGxsLHFxcSxfvty77i9/+QsXXXSRd18UW7NmDR07dvTui7y8PO9zGTNmDK1atfLui2Jn+1yMATwvarspbdu21Z+DaZyXW3kmT56szZo10xYtWmjTpk21Vq1aesMNN5TaZuvWrZqQkKCqqv/v//0/nTdvnnfdyJEjdeHChafU+9JLL+n48eNPiRcWFmq9evW8j4uKivTQoUOqqnr8+HFt166dLl++vFT5O+64Qx988EFVVd28ebP6+PiU+1waN26s06dP16KiIu3Vq5d+8MEHqqo6ceJEDQ8PV1XVV199VQcNGuRtOzw8XPfu3avHjx/X2rVr6+zZs3XJkiVaq1Ytvemmm1RVdffu3aqqeuLECY2NjdWoqChVVf3xxx+1oKBAVVUfeOABDQ8P19WrV2thYaHu3btXVVUzMzM1PDxcR40aVaquY8eOaVpamvr4+Gh8fLxefvnlOmXKFJ06daqGhoZqgwYNtEWLFjp79mxNSUnR3Nxc/eMf/6gRERHaqlUrXbRokV5xxRW6ePFiTU9P1/j4eI2MjNQJEyboCy+8oMOGDdOjR4/qoEGDNCIiQtu1a6fffPONxsXF6bZt20r1JT09XRs0aKBNmjTRCRMmaF5enu7fv19VVZcuXardunXTvLy8U/ZFYmKiZmRklLsvpkyZ4v17l9wXxc+lZF2q6n0uqqqHDh3SI0eOlPs3NtULkK6VeI+1I5tqYMaMGWRnZ/P999+zYMECunbtyj/+8Q9ycnK827z55pu0bt0agPDwcJYuXeo9ob5ixQpiY2M5fPiwt0xBQQEffPABsbGxAGRlZXnrev/994mJifE+Lj5XcvjwYbZv386JEycoLCz0lldV5s+fz9ChQwFYunQpNWvWBDznmo4dOwbAhg0bOHDgANdccw0APXr04K233kJVefPNN7n00ksBSElJYcmSJagqX3/9NQUFBQQFBZGRkUFBQQFJSUk8/fTTBAUFeZ/PgQMHAFi8eDF16tQhJSUF8ExoUGeSzN///nfy8/OJiIjg6NGjnDhxAoC//e1vBAcHe8sU1+Xv789dd91FmzZtyMjIYPny5XTq1AmAsWPH0qRJE959912ysrIYP348OTk5LFiwgI0bN7Jo0SJGjx7NiRMn6N69O+PGjeP5559n06ZNZGVl8cgjj/DAAw/w4osv0rBhQ7Zu3crvfvc7Ro4cyXXXXUd4eDgAwcHBAIwZM4aAgAB++OEHsrKyWLp0KQ0aNADg2WefZfLkyd7zScVlFi9eTFJSEsnJyQAEBQXh6+sLwJw5c7j33nsB8PHxoXHjxt59NH78eBo2bFiqrvXr11NQUED37t0Bz3m1wMDA075mza9QZTLSr+H2v3xkU9Inn3yivXv3VlXVG2+8UVu3bq2JiYnap08f3bVrl6p6PnUOGDBA4+PjNS4uTv/0pz+pquoPP/ygqampmpiYqPHx8frb3/5WT5w4oaqqt912m8bHx2tycrJ27txZ161b520zOTlZCwoKNCEhQX18fLRx48alyv/nP//R4OBgb/n27dtrrVq1NCUlRRMTEzUyMlKTkpI0KipKY2NjVdXzabp169Zat25dTUhI0Pr16+v69etVVfWRRx7RGjVqaEJCgnbo0EGXLVumycnJ6u/vrzVq1NDExEQNCAjQlJQUbdCggV5++eXauXNnTUhI0JCQEG3WrJleccUV2qZNGx08eLDGx8dr69attUaNGtqnTx9t06aNXn311ZqcnKyJiYlat25dbdOmjXbs2FHbt2+v11xzzSn7YtKVNhoAABi/SURBVOfOnerr66v16tVTX19f9ff318cee0xVVfv27auTJk3S8PBwDQsL0w8//FBVVVNSUvSSSy7RK6+8Uv39/fWuu+7SgoICnT9/vvr7++v06dO1Xr162r59e83MzNQTJ05oQECAjhs3Ti+77DINDAzU5s2ba6tWrbR+/fqalpamQ4YM0YCAAK1Ro4Z26dJFc3NzNTk5WR944AENCwvTgIAADQ8P10WLFukTTzyhN954o3bo0EEDAgI0KChIJ0yYoLm5uRoWFqYTJkzQBg0aaO3atbVNmza6detW7du3r/7ud7/TOnXqaGBgoIaHh+vo0aM1PDxca9WqpbVq1dKaNWtqixYtvEdDqqp//OMfNSoqyntEVyw9PV1bt26tUVFROmHCBC0qKlJV1by8PB00aJBGRUVpu3btdOvWraqqun37du3cubPGxsZqfHy83nnnndq6dWsNCwvT3/zmN9q6dWu9+uqr9cCBA6rqOVrr3Lmz1q5d+5Sj9Pz8fB09erTGxMToRRddpK+//rp33cKFCzUuLk7j4+N16NCh5f6vnUv5bdu2affu3TU2Nlbj4uK8z6uoqEjvu+8+jYmJ0djYWH3qqadK/U8nJyd7j56L7d+/X/v3768XXXSRxsbG6hdffOFdN2vWLG3VqpXGx8frpEmTvPFvvvlGO3To4H3NHzt27Jyey9KlSzU5OVmTk5MVOArkAf20gvfYC/4m/0u5/S8nm/An3b9V1v79+7Vz5866du1ab+zWW2/VP//5z97HeXl5+uOPP6qq580mLCxMDxw4oKtWrdJu3bp5t/v000/16quvVlXV+Ph43bFjh3ddZGSkt45iS5Ys0QYNGujatWs1ISFB+/fvr71799aV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usLCQvz8/JgxY4a3/A8//MBrr71GQEAAmZmZ9O/fny1btnjLZ2Zm0qBBA6666irWrFnDG2+8QVFREcOHD2f79u0sXLiQe++9l4yMDLKyshgwYADr168nNzeXoUOHMnr0aObNm8fhw4fx8fGhUaNG3HzzzWzYsIGJEyeycOFChg4dSmZmJqtXr2bLli1cccUVrF692tv+sWPH+Pbbbxk/fjyPPfYYw4cPZ+HChQA89dRTfPLJJwwcOJDLLruMJUuW8N1335XaF/Pnzz/lAwLQEHi1wh0O+J1pA2Mq0uIpOL4rh32vjICiQtAiAlMGMX7z1Yx/Cva9soCaEUNp8dTJMke/+ZQDHz4APn7g40v9q56jzcueo5T8y5/l8mtvQk8cIyDuSr7NvJLtV3kuXTNs2DCio6Np1KgRCxYsACAnJ4f27dsTExNDUVER119/PS+99BJHjx6lRo0a3H333dSsWZO5c+ciIjRs2JA77riDtLQ0RISrrrqK3r17A/Doo48ybNgwJk6cSJMmTXjxxRcBz3dtFi9eTHx8PL6+vjz22GMEBQWxd+9eunbtytq1azl27BiBgYF89tlnxMXFERoayosvvsi//vUvOnToQFBQEM8//zy7du1i9uzZHDx40DvV+/rrr2f79u1ERUVxyy230K9fP+677z7mzp3L2rVrycjIYPHixbz++ut0796dtLQ0kpKS8PHxYcaMGdx0002Eh4dz5ZVXsnz5csaMGUPr1q257777eP7557n55pt5/PHHmTx5MsHBwcydO5dXXnmFunXrcv311/OnP/2JlJQUrrrqKi655BI+//xzHn30UeLj4+nevbv3uXTp0oVu3bqxcuVKEhMT8fX15b777uPpp59mw4YN1KpVi4kTJ7J3716uu+4674QE1VOveiEip41XVKbY4cOHueeee2jVqhX16tVjzpw5DBs2jKysLNLS0rwTUE6noKCA7OxsLr30Uh5//HEef/xx7rrrLl5++WUKCgrIyspi2bJlZGdnc9lll7Fu3TrvhAvwfEjKy8ujX79+DBs2jMcff5zhw4fTtGlTAgICyMrKYsGCBSQnJ3PNNdeQlpZGr169+Oyzz5g7dy75+fls2bKFl156yftBIiAggObNmzNq1ChuvvlmPvvsM2rWrMnKlSv59NNPOXbsGB07duTIkSMUFhayadMm5s2bx6hRoxg0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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画图\n",
    "bar = plt.bar(岗位名_处理,岗位薪资[\"工资水平\",\"mean\"].values, color='dodgerblue')\n",
    "bar[0].set_color('green')\n",
    "\n",
    "# 给条形图添加数据标注\n",
    "for x, y in enumerate(岗位薪资[\"工资水平\",\"mean\"].values):\n",
    "    plt.text(x-0.4, y+500, \"%s\" %y)\n",
    "\n",
    "plt.tick_params(labelsize=10)\n",
    "plt.xlabel('岗位名')\n",
    "plt.ylabel([\"工资水平\",\"mean\"])\n",
    "plt.title('各岗位薪资平均水平')\n",
    "plt.rcParams['figure.figsize'] = (14, 7)\n",
    "# plt.rcParams['savefig.dpi'] = 100 #图片像素\n",
    "# plt.rcParams['figure.dpi'] = 100 #分辨率"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  行业薪资水平（平均值）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>行业</th>\n",
       "      <th colspan=\"3\" halign=\"left\">工资水平</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>最小值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>平均值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>房地产</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>500000.000000</td>\n",
       "      <td>22113.703704</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>租赁服务</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>25000.000000</td>\n",
       "      <td>14166.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>石油</td>\n",
       "      <td>7500.0</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>13552.083333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>中介服务</td>\n",
       "      <td>7000.0</td>\n",
       "      <td>25000.000000</td>\n",
       "      <td>12600.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>网络游戏</td>\n",
       "      <td>3700.0</td>\n",
       "      <td>27500.000000</td>\n",
       "      <td>12183.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>计算机软件</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>41666.666667</td>\n",
       "      <td>12129.583333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>多元化业务集团公司</td>\n",
       "      <td>3750.0</td>\n",
       "      <td>45833.333333</td>\n",
       "      <td>11731.481481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>学术</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>23333.333333</td>\n",
       "      <td>11541.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>电气</td>\n",
       "      <td>5250.0</td>\n",
       "      <td>20833.333333</td>\n",
       "      <td>11238.888889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>教育</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>35000.000000</td>\n",
       "      <td>11155.660377</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          行业    工资水平                             \n",
       "                 最小值            最大值           平均值\n",
       "0        房地产  2500.0  500000.000000  22113.703704\n",
       "1       租赁服务  5000.0   25000.000000  14166.666667\n",
       "2         石油  7500.0   20000.000000  13552.083333\n",
       "3       中介服务  7000.0   25000.000000  12600.000000\n",
       "4       网络游戏  3700.0   27500.000000  12183.333333\n",
       "5      计算机软件  2500.0   41666.666667  12129.583333\n",
       "6  多元化业务集团公司  3750.0   45833.333333  11731.481481\n",
       "7         学术  5000.0   23333.333333  11541.666667\n",
       "8         电气  5250.0   20833.333333  11238.888889\n",
       "9         教育  2500.0   35000.000000  11155.660377"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "行业工资水平_前10=df_清洗后.groupby(by='行业').agg({\"工资水平\":[\"min\",\"max\",\"mean\"]}).rename(columns={'min':'最小值','max':'最大值','mean':'平均值'}).sort_values(by=(\"工资水平\",\"平均值\"),ascending=False).head(10).reset_index()\n",
    "行业工资水平_前10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>行业</th>\n",
       "      <th colspan=\"3\" halign=\"left\">工资水平</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>最小值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>平均值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>房地产</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>500000.000000</td>\n",
       "      <td>22113.703704</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>租赁服务</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>25000.000000</td>\n",
       "      <td>14166.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>石油</td>\n",
       "      <td>7500.0</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>13552.083333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>中介服务</td>\n",
       "      <td>7000.0</td>\n",
       "      <td>25000.000000</td>\n",
       "      <td>12600.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>网络游戏</td>\n",
       "      <td>3700.0</td>\n",
       "      <td>27500.000000</td>\n",
       "      <td>12183.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>计算机软件</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>41666.666667</td>\n",
       "      <td>12129.583333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>多元化业务集团公司</td>\n",
       "      <td>3750.0</td>\n",
       "      <td>45833.333333</td>\n",
       "      <td>11731.481481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>学术</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>23333.333333</td>\n",
       "      <td>11541.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>电气</td>\n",
       "      <td>5250.0</td>\n",
       "      <td>20833.333333</td>\n",
       "      <td>11238.888889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>教育</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>35000.000000</td>\n",
       "      <td>11155.660377</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          行业    工资水平                             \n",
       "                 最小值            最大值           平均值\n",
       "0        房地产  2500.0  500000.000000  22113.703704\n",
       "1       租赁服务  5000.0   25000.000000  14166.666667\n",
       "2         石油  7500.0   20000.000000  13552.083333\n",
       "3       中介服务  7000.0   25000.000000  12600.000000\n",
       "4       网络游戏  3700.0   27500.000000  12183.333333\n",
       "5      计算机软件  2500.0   41666.666667  12129.583333\n",
       "6  多元化业务集团公司  3750.0   45833.333333  11731.481481\n",
       "7         学术  5000.0   23333.333333  11541.666667\n",
       "8         电气  5250.0   20833.333333  11238.888889\n",
       "9         教育  2500.0   35000.000000  11155.660377"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 行业薪资\n",
    "行业工资水平_前10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2IAAAG5CAYAAADsyYdXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVxV1f7/8dcGHFIsB6S0o5HiAAgchxy+KQ6Fc6SGZpqzmaZ1y9S815/N5pDltTStm3NOWde09KuWZg5pjkTmAGioKDmlIijDgfX7A9hfCVBv6dGb7+fjcR4e195rnb0O9njwbu39WZYxBhEREREREXEfj5t9ASIiIiIiIrcbBTERERERERE3UxATERERERFxMwUxERERERERN1MQExERERERcTMFMRERERERETdTEBMREREREXEzr5t9ASIiIpZlPQoML+DQGqBlAe2JxpjOlmUtA8oVcDwSGAg8XMCxMUDRQj5vJfAJsMCdn2mMeauAdhER+QtTEBMRkVtBBeBVY8w3uQ2WZXkDHwPrjTH/7/KTLcv6LOdthjGm8e+OTQSKAzWBZsYY12XH2gN35xwv6POmACVuwmeKiMhtRrcmioiIiIiIuJmCmIiIiIiIiJspiImIiIiIiLiZgpiIiIiIiIibKYiJiIiIiIi4mYKYiIiIiIiImymIiYiIiIiIuJmCmIiIiIiIiJtpQ2cREblVvGNZ1tnL/u4JHAN6WJbV+Hfnlsv5M9iyrPW/O1aV/9skea1lWeZ3/d65wucdzHl/Mz5TRERuI5Yx5upniYiIiIiIyHWjWxNFRERERETcTEFMRERERETEzW67Z8R8fHyMn5/fzb4MERERERG5Re3cufO0Mab8jfyM2y6I+fn5sWPHjpt9GSIiIiIicouyLOvwjf4M3ZooIiIiIiLiZgpiN9nRo0dp3rw5AQEBBAUFMXnyZACGDx9OzZo1CQkJoWPHjpw7dw6AM2fO0Lx5c7y9vRkyZEiesUaNGkWlSpXw9vbO0z59+nSCg4NxOp00btyYvXv35ruOCxcu4HQ67ZePjw/PP/88AGlpaTz++OP4+/vToEED4uPjATh8+DB169bF6XQSFBTE9OnT7fGaNGlij1WxYkU6dOgAgDGG5557Dn9/f0JCQti1axcAqamp1K9fn9DQUIKCgnjllVfssR5//HF7LD8/P5xOp31s7Nix+Pv7U6NGDVavXm23t27d2h5r4MCBZGZmAvDCCy/YY1WvXp3SpUvbfebMmUO1atWoVq0ac+bMyfcdPfvss/m+WxERERGRP8QYc1u96tata24lx48fNzt37jTGGJOUlGSqVatmfv75Z7N69WqTkZFhjDFmxIgRZsSIEcYYY5KTk83GjRvNtGnTzODBg/OMtWXLFnP8+HFTsmTJPO3nz5+33y9btsy0atXqqtdVp04d89133xljjJk6dap5+umnjTHGLFy40HTp0sUYY0xaWppJTU01xhhz4cIFc99995ljx47lG6tTp05mzpw5xhhjVqxYYVq3bm2ysrLMli1bTP369Y0xxmRlZZkLFy4YY4xJT0839evXN1u2bMk31tChQ81rr71mjDHm559/NiEhISY1NdUcOnTIVKlSxbhcrjxzzsrKMp06dTILFy7MN9Z7771n+vTpY4wx5syZM+b+++83Z86cMb/99pu5//77zW+//Wafu337dvPkk0/m+25FRERE5K8H2GFucC7RithNVqFCBerUqQNAqVKlCAgI4NixY7Rs2RIvr+xH+Bo2bEhCQgIAJUuWpHHjxhQvXjzfWA0bNqRChQr52u+88077fUpKCpZlXfGaYmNjOXnyJE2aNAFg2bJl9OrVC4DIyEjWrl2LMYaiRYtSrFgxIHvVLCsrK99YFy5cYN26dfaK2LJly+jZsyeWZdGwYUPOnTtHYmIilmXZq00ZGRlkZGTku05jDJ9++ilPPPGEPVbXrl0pVqwY999/P/7+/mzbti3PnF0uF+np6QXOeeHChfZYq1evJjw8nLJly1KmTBnCw8NZtWoVAJmZmQwfPpwJEyZc8XsTEREREblWCmK3kPj4eHbv3k2DBg3ytM+cOZM2bdr8qbGnTp1K1apVGTFiBO+9994Vz124cCGPP/64HV6OHTtGpUqVAPDy8uKuu+7izJkzQPatlSEhIVSqVImXXnqJihUr5hlr6dKlPPTQQ3YwunwsAIfDwbFjx4DswON0OvH19SU8PDzf97Bx40buvvtuqlWrdtWxAFq1aoWvry+lSpUiMjIyz1iHDx/ml19+oUWLFlcda8qUKURERBQYckVERERE/ggFsVtEcnIyjz32GP/85z/zrGCNGTMGLy8vunfv/qfGHzx4MAcPHmT8+PG8+eabVzx30aJF9koRZK9E/V5uSKtUqRLR0dHExcUxZ84cTpw4kee8y1edrjaWp6cnUVFRJCQksG3bNvbs2fOHx4LsVa7ExETS0tJYt25dvjlGRkbi6el5xbGOHz/OkiVLePbZZ/MdFxERERH5oxTEbgEZGRk89thjdO/enU6dOtntc+bM4auvvmL+/PlXvZ3wWnXt2pUvvvii0OM//vgjLpeLunXr2m0Oh4OjR48C2bf6nT9/nrJly+bpV7FiRYKCgti4caPddubMGbZt20a7du0KHAsgISEh3ypa6dKladasmX1rYO7n/vvf/+bxxx//j8YqXrw4ERERLFu2LE/778NmYWPt3r2buLg4/P398fPz4+LFi/j7+xf01YmIiIiIXDMFsZvMGEO/fv0ICAhg6NChdvuqVasYP348y5cvp0SJEn/qM2JjY+33K1assG/tK8jvV50AIiIi7CqCn332GS1atMCyLBISErh06RIAZ8+eZfPmzdSoUcPut2TJEtq3b5/nebaIiAjmzp2LMYatW7dy1113UaFCBU6dOmVXhrx06RLffPMNNWvWtPvl/t3hcOQZa9GiRaSlpfHLL78QGxtL/fr1SU5OJjExEcgOcCtXrswz1oEDBzh79iyNGjWy21q1asWaNWs4e/YsZ8+eZc2aNbRq1Yp27drx66+/Eh8fT3x8PCVKlCAuLu4avnURERERkcLddhs632o2b97MvHnz7PLyAG+99RbPPfccaWlphIeHA9mFOHLLw/v5+ZGUlER6ejpffPEFa9asITAwkBEjRrBgwQIuXryIw+Ggf//+vPrqq0yZMoVvvvmGIkWKUKZMmTyl2Z1OJ1FRUfbfP/30U1auXJnnGvv160ePHj3w9/enbNmyLFq0CIB9+/bx4osvYlkWxhiGDRtGcHCw3W/RokWMHDkyz1ht27Zl5cqV+Pv7U6JECWbNmgVAYmIivXr1IjMzk6ysLLp06UL79u3zjPX7gBgUFESXLl0IDAzEy8uLqVOn4unpSUpKChEREaSlpZGZmUmLFi0YOHCg3W/hwoV07do1zypj2bJlGT16NA888AAAL7/8cr5VPxERERGR68Uq6NmYv7J69eqZHTt23OzLEBERERGRW5RlWTuNMfVu5Gfo1kQRERERERE3UxATERERERFxMwUxERERERERN1MQExERERERcTMFMRERERERETdTEBMRERER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vPXWW5QpU4bOnTszY8YMWrduzfbt2ylevDjPPvssU6dOpUaNGmzcuJGxY8eSlZVFhw4d7Ofotm7dSkREBD/++CMNGjRg4cKFzJgxw95A/ZNPPsHHx4cjR47Qq1cvzp07R2ZmJuPGjbMrUY4YMYIVK1aQlZVFeHg4kydPxrIs1q5dy/Dhw8nKysLb25vZs2fj7+/P+fPnefLJJzly5Agul4thw4bZ392kSZP4+OOPsSyL4OBgZs2aRfHixYmKimLgwIGkpqbi5eXFBx98QP369cnIyKB///7s2rULl8tFz549+fvf/27/W3zrrbewLIuKFSv+qbmsW7eOYcOGkZ6eTt26dZkxY4ZdKVT+uGv5Bn/NqY5YEAso/EZmERGR/3IKq+Jup06domzZsnh6enLo0CFiY2OpUqUK9erVs/f+yt0qoKBiIoWxLItHHnmE9evX06JFC9auXUtgYCCQHbByC5qcPn2amJgYqlSpQunSpTl79iynTp2ifPnyrFu3zg5+HTp0YN26dfTt25fvvvuO6tWrA/D/27v3aKuq+17g3+lBHcZeUlCJDwzxEppIA6IQNJpajVHx2hGtRXzFZ1LSjpiHNrUmGcVHSr2KmsZotSYqaI0aTWw0MfiM6IivEDXaGB80thHhCogGFF/ovH+cfU4OwjkHHLgOj89njD3O2XOvtfZcky3DL3Pu3zzggANy/PHHZ+nSpXn99ddz//3354QTTsiWW26ZbbfdNk888UQ+9KEPLfP+hxxySBYtWpR77703Tz75ZF5//fV87GMfyw9/+MPstddeefXVV7N06dLMmDEjn/rUp3LaaaflxBNPzN57750jjzwykydPzvDhw3PJJZfknnvuyfe+973Mnz8/l156aZ588slce+21Oe6443LxxRfnggsuyKc//ensueeeGTNmTAYMGJDf//73eeyxx/KlL30pX/va13L33Xdn6NChOf/883Pqqafmn/7pnzJhwoTl9qG755578vOf/7zze30f//jHM2PGjOyxxx7dFgC54IILMnz48Nx4442d+9AdccQRmT9/fs4777w89thj2WSTTTJhwoRcffXVOeaYY3LSSSfllFNOyX777ZebbropJ510Uu68885ce+21ee211/Loo4927kN32GGHZfDgwfnSl76Uxx57LJtvvnlOOumkd3wvu+++e44++ujcfvvt+ZM/+ZNMmjQp06ZN63ELD1ZOr0sTa60Ta60ndvM4odZ6ShMdBQBYW63K0s277rqrc3nm+PHjc9FFF2XgwIE9Xn9ll26eeeaZOfXUUzNy5MhcccUVOeecc5K0bxmw2WabZfjw4dlzzz0zZcqUbLbZZmlra8vZZ5+dvfbaKyNGjEitNX/913+dpH2fuB/84AcZMWJEvvrVr+a73/1ukmT77bfPuHHjMnLkyIwdOzaf/exnOytjfvvb384RRxyRkSNH5uGHH87Xvva1JMkZZ5yR+fPnZ9asWTn00EMzbdq0DB8+PGPHjs3gwYNz1FFHZdSoUdlpp53yxS9+MVtvvXXOPPPMTJ06Nc8991ymTZuWc845J/3798++++6bAQMG5JZbbsk3vvGNTJkyJZtsskleeumlnH322Tn66KMzb968znvp169fvvOd72TChAlZuHBhrr766px11llZtcGnSQAAGAFJREFUtGhRZ9GO7op5dN277bXXXltm77aezuluH7qO/eSWLl2aJUuWLHPOWWedlUGDBuVzn/tcZ/v999+fn/zkJ9lggw1yzz33dO5Dt2DBgrz44osZMmRIPv/5zy9zLz/+8Y8zadKkjBo1KgceeGDndyVvuummPPDAA9lxxx2z4447Zu7cuXnf+96X559/PhtvvHFn0N5jjz1y2mmnrdK2AdOmTcuwYcMybNiwTJs2rbP9M5/5THbYYYeMHDky48eP75x5njJlSuf2DR/5yEfS1taWhQsX5oknnuhsHzVqVPr3759/+Zd/SdK+ZHjkyJEZNWpU9tlnn8yZMydJ+z9adN0OomO5c9I+azhixIiMHDky48aNy4IFC5b576qUMr6UUkspY7q0nVlK+c/W45Au7VeWUp5otV9aStkwvSjdbS7ZuuDTaf8O2Pxa6869XWxtMGbMmDpz5sy+7kanctr6s7KznrLqXyf0L9G9Wx/GyPj07p2OkfHpnTGCZnTM8nVdUppkuQ3Bu7ruuuty0UUX5bbbbuts23ffffPAAw9kv/32yxVXXJG2trbMnTs3++yzT1544YW8/PLLue222zJ69OgVXu+4447LpptummHDhuVnP/tZr+d/5StfyXe/+93UWnP88cdn8uTJSdqXvB544IHZZJNN0r9//9x3333p379/Fi9enE996lN5/PHHs3jx4lxzzTXZf//9kyTf+ta38vWvfz2bbLJJ9tlnn1x55ZVJ2gvM/Pmf/3lKKVm4cGFmzZqVIUOG5JFHHsnJJ5+cW2+9NW1tbTnvvPMyceLEvPzyyzn33HMzefLktLW1ZfTo0Z33suuuu2bevHl59dVXl7mXqVOn5lvf+laefvrpZe6l1poPfOAD+cEPfpAxY8Zk5513ztNPP91ZAXThwoXZfPPN89RTT2XChAm54447OrcNGDRoUBYuXJgxY8Zk5syZKaVk9OjR+eUvf5kBAwZk0aJFnds+nHjiiRk0aNByhVJuvPHGfPOb38wdd9yxTPubb76ZbbbZJvfff3+GDBmyzLU6ZhYvuuiibj9XS5cuzdZbb73MrOF73vOenHrqqUmSUspDSV5KslGS42utM0sp+yf5cpL9kmycZEaST9RaF5VS/k+Sn7Yu/70kd9VaL1zuQ9ZFjzNitdbtaq3/e10JYQAArBt+/etf5x/+4R/yb//2b8u033zzzZk7d25ee+21zv9571h2OXv27Nx000058sgj89Zbby1z3htvvJELL7wwDz30UObMmZORI0fmjDPO6PH8WbNm5Te/+U1mz56dZ599NnfccUfuuuuuJN0XAOnYh27OnDl5+OGHc/zxx2fRokV54YUX8qMf/ShPP/105syZk5dffjn//u//nqS9vP+FF16Y+++/P1tuuWXnssDFixdnwIAB2XXXXXPDDTfknHPOyW9/+9tstNFGufPOO3P66afnmGOOWeZe5s2bl7/4i79Y7l6ee+65vPDCC8vdSyklV199dU444YSMHTs2v/nNb7LlllsmWbltA26++ebsvffeGThwYAYMGJC99967s5JlR3CqteaVV17pLKDT1VVXXbXCbS5uv/32DB06NEOGDFnmWkl74Z8VXaurWmtntdJa6zKzhi3bJDkryatd2oYnmVFrXVprfTnJr5KMa13vptqS5IEkg3vsQFauaiIAAKwxZs+enb/8y7/M5ZdfnqFDhy73etd96JLkkksuyYQJE5Isu49cVx1FX4YOHZpSSiZMmJB77rmnx/Ovv/767LLLLvmjP/qjZfZumz9/fmcBkKT9O3Ad17rsssty0EEHLbcP3W233ZbtttsuW2yxRTbccMMcdNBBnedMmzYtBx10UJLkve99bx544IEk7Xu2jRs3LqWUDBw4MLvttltmzpzZeS+DBg1a7l7mzp2b6dOnZ9SoUbntttvyyiuvZMGCBXnwwQfz/PPPZ9ddd80xxxyTXXfdtbOgzsc+9rHcfffdueWWW7Lxxhvn1VdfXeltA5599tlsu+22neM8ePDgPPvss53Pjz322Gy55ZZ5/PHH84UvfGGZP5MlS5Zk+vTpnUVhulrRPoRf//rXs+222+bKK6/M6aef3tnedTuIjuI8G264YS688MKMGDGic2asI+A+9NBDSbJRrfXHb3vbXyXZr5TynlLK5kn2TLJt1wNaSxKPTDJ9uU6/jSAGAMBa48UXX8z++++fM844I7vttltne0/70K3MPnLbbLNNHnvsscyfPz9Jcuutt3buw9bd+e9///szY8aMLF26dJm92zoKgDz55JM9XqvrPnTvf//7c99992XJkiWpteb222/vPGfrrbfOjBkzkrTP9gwbNqzzWh2zfq+88kruu+++fPjDH+68l8WLFy/3/mPHjs3JJ5+cu+++O9OnT88LL7yQLbbYInvvvXc++tGP5sEHH8yee+6ZSy+9tPOcjk3AX3755SxYsCCHH374Sm8bsKKvQXWdrbrssssyZ86cbL/99rnmmmuWOe7GG2/Mbrvtttx3JF9//fXccMMNOfjgg5dpnzx5cp555pkcccQROf/885MkW221VX73u9/loYceyrnnnpvDDz88ixYt6nYG9K233soJJ5yQJM+8vd+11luS3JTkniRXJbk3ydK3HfavaV+W2Gs5VkEMAIA+tSrFTM4///zMmjUr3/jGNzoLMMybN6/Hfeh62keuo5jJ1ltvnVNOOSW77777csVEujt//PjxGTp0aEaMGLHM3m0dBUD+6q/+KjvssEOuuOKKTJkyJUn3+9DtvPPOGT9+fHbaaaeMGDEib731ViZOnJikfdnf3/3d32W//fbLc889l4svvjhJ+z50L730Un7xi1/kqKOOyrHHHpuRI0d23ss///M/56qrrlrmXi644IJ85zvfycc//vE888wz2X333VNKybHHHpthw4ZlxIgROf/887NkyZLOfeimTJmS7bffPnvuuWc22mijTJo0KUly8MEH58EHH0zSPtN1wAEHrHALhGee+UOmmT179tuXAKatrS2HHHLIMoU/khXPeiXJT3/60+y0006dhVHe7vDDD++81sYbb5zNNtssSTJ69OgMHTo0Tz75ZLczoIsXL+74PtmHSin/nWSXJDd0FOyotU6utY6qte6d9gryT3W8bynllCRbJFmpjeh6LNaxLlKso+8o1tE9hQR6Znx6p1hHz3yGeucz1DPFTFgTrGpBk6lTp2bmzJmds0NLly7Niy++mM033zxvvPFGDjvssHzyk5/M3/zN32Tu3LnZaqutkiTXX399zjzzzOX2+kuSQw89NBMnTswnPvGJTJ06NT/5yU9y7bXXZvr06bnqqqsybdq0LFiwIDvuuGMefvjhzgIdHYFtp5126izW8V//9V/54Ac/mFpr/v7v/z5JcvbZZydprzS53Xbb5Zlnnsmmm266XB/23Xffzv3XkuSpp57qnCn89re/nRkzZuS6665bbjuIP/uzP8ujjz6aV199NaNHj84jjzySLbbYIv/4j/+YJUuWdFYSLaX8stY6ppRyZ5KvtIp1tCX541rr86WUkWkvyjGq1rq0lPLZJMcl2avW+srK/Hm+o53YSim3JXkjyQUrWDsJAACsRocddljuvPPOLFiwIIMHD85pp52WgQMH5gtf+ELmz5+f/fffP6NGjcrNN9+cpH1T80WLFuX111/Pf/zHf+SWW27JkCFDsu++++aNN97Im2++mU9+8pOd2xGcd955ueGGG9KvX78MHDgwU6dO7XzvUaNGdc4gnXnmmTnyyCPz5S9/OVtssUUuu+yyJO3VKm+55ZYMHz48bW1tnVsgJO2zgB/96EeTJJMmTcrAgQPz1ltv5eijj86iRYtSa80OO+yQCy/8Q5HB66+/Pvvss89yIWzJkiW59dZblyvScvLJJ+eJJ57IBhtskCFDhuSiiy5K0r4dxKRJk9KvX7+0tbUtsx1ExwzohhtumCFDhixzz93YMMndrdnURUk+XWvtWJp4UZL/SXJv6/Uf1lpPX+FVWt7RjFgpZeskWyXZpdZ6wSpfoA+ZEes7ZsS651/re2Z8emc2o2c+Q73zGeqZGTFYv3TMiL2b7/GOZsRqrXOSzEnyy9XbHQCAdYuwCqxIj0GslPKztG/ovLDWOr6ZLgEAAKzbepsRO6b18813uR8AAADrjR6DWK31f0opRyXpaXfqF2qtN67ujgEAAKyrVuY7Yscl+WLa6+SvyOQkghgAAMBKWpkgtrjW+kh3L5ZS3liN/QEAYD2imAnrq5UJYr3VHF+/doQGAIAGCavrpg1W4pjeNrpafzbCAgAAWA1WZkZsbinl3B5e/9Xq6gwAAMD6YGWC2M97eX3h6ugIAADA+mJlgtixUTURAABgtVE1EQAAoGErU6xD1UQAAIDVSNVEAACAhqmaCAAA0DBVEwEAABqmaiIAAEDDVE0EAABomKqJAAAADVM1EQAAoGGqJgIAADRM1UQAAICGrczSxGOTPJTk4W4en1vRSaWUS0sp80op/9mlbWAp5dZSylOtnwO6vPbVUsqsUsoTpZR9u7SPLqU82nrtvFJKabVvXEq5ptV+fynlA6t89wAAAH1gZYLY4lrrI7XWX63okaS7qolTk4x7W9vJSW6vtQ5LcnvreUopw5McmuRPW+f8aymlrXXOhUkmJhnWenRc8zNJXqi1fjDJN5OcuRL3AgAA0OfetaqJtda7svyyxQOSTGv9Pi3JgV3ar661vlZrfTrJrCRjSylbJelfa7231lqTXP62czqudV2SvTpmywAAANZkKxPEerMq4ed9tda5SdL6OajVvk2SZ7ocN7vVtk3r97e3L3NOrXVpkt8n2WyFHSxlYillZill5vz581ehuwAAAKvfyhTr+H89VE0sSbrd7HkVrCjM1R7aezpn+cZaL05ycZKMGTPGvmcAAECf6jWI1Vonrsb3e66UslWtdW5r2eG8VvvsJNt2OW5wkjmt9sEraO96zuxSSr8k740KjgAAwFqgx6WJpZSnSym/LaXcv5re74YkR7d+PzrJj7q0H9qqhLhd2otyPNBavri4lLJL6/tfR73tnI5rjU9yR+t7ZAAAAGu0HmfEaq3bvdMLl1KuSrJHks1LKbOTnJLk/yb5finlM0l+l+Tg1vv8upTy/SSPJVma5PO11jdbl/rbtFdg3CTJT1uPJLkkyRWllFlpnwk79J32FQAAoEkr8x2xd6TWelg3L+3VzfGTk0xeQfvMJB9ZQfuraQU5AACAtUlvSxMf7O0CK3MMAAAAf9DbjNj2pZSeqiKWtBfJAAAAYCX1FsQ+vBLXeLP3QwAAAOjQW7GO/2mqIwAAAOuLHr8jBgAAwOoniAEAADRMEAMAAGiYIAYAANAwQQwAAKBhghgAAEDDBDEAAICGCWIAAAANE8QAAAAaJogBAAA0TBADAABomCAGAADQMEEMAACgYYIYAABAwwQxAACAhgliAAAADRPEAAAAGiaIAQAANEwQAwAAaJggBgAA0DBBDAAAoGGCGAAAQMMEMQAAgIYJYgAAAA0TxAAAABomiAEAADRMEAMAAGiYIAYAANAwQQwAAKBhghgAAEDDBDEAAICGCWIAAAANE8QAAAAaJogBAAA0TBADAABomCAGAADQMEEMAACgYYIYAABAwwQxAACAhgliAAAADRPEAAAAGiaIAQAANEwQAwAAaJggBgAA0DBBDAAAoGGCGAAAQMMEMQAAgIYJYgAAAA0TxAAAABomiAEAADRMEAMAAGiYIAYAANAwQQwAAKBhghgAAEDDBDEAAICGCWIAAAANE8QAAAAaJogBAAA0TBADAABomCAGAADQMEEMAACgYYIYAABAwwQxAACAhgliAAAADRPEAAAAGiaIAQAANEwQAwAAaJggBgAA0DBBDAAAoGF9EsRKKf9dSnm0lPJwKWVmq21gKeXWUspTrZ8Duhz/1VLKrFLKE6WUfbu0j25dZ1Yp5bxSSumL+wEAAFgVfTkjtmetdVStdUzr+clJbq+1Dktye+t5SinDkxya5E+TjEvyr6WUttY5FyaZmGRY6zGuwf4DAAC8I2vS0sQDkkxr/T4tyYFd2q+utb5Wa306yawkY0spWyXpX2u9t9Zak1ze5RwAAIA1Vl8FsZrkllLKL0spE1tt76u1zk2S1s9BrfZtkjzT5dzZrbZtWr+/vX05pZSJpZSZpZSZ8+fPX423AQAAsOr69dH77lZrnVNKGZTk1lLK4z0cu6LvfdUe2pdvrPXiJBcnyZgxY1Z4DAAAQFP6ZEas1jqn9XNekuuTjE3yXGu5YVo/57UOn51k2y6nD04yp9U+eAXtAAAAa7TGg1gpZdNSyv/q+D3JPkn+M8kNSY5uHXZ0kh+1fr8hyaGllI1LKdulvSjHA63li4tLKbu0qiUe1eUcAACANVZfLE18X5LrW5Xm+yX5Xq11einlF0m+X0r5TJLfJTk4SWqtvy6lfD/JY0mWJvl8rfXN1rX+NsnUJJsk+WnrAQAAsEZrPIjVWn+bZIcVtD+fZK9uzpmcZPIK2mcm+cjq7iMAAMC7aU0qXw8AALBeEMQAAAAaJogBAAA0TBADAABomCAGAADQMEEMAACgYYIYAABAwwQxAACAhgliAAAADRPEAAAAGiaIAQAANEwQAwAAaJggBgAA0DBBDAAAoGGCGAAAQMMEMQAAgIYJYgAAAA0TxAAAABomiAEAADRMEAMAAGiYIAYAANAwQQwAAKBhghgAAEDDBDEAAICGCWIAAAANE8QAAAAaJogBAAA0TBADAABomCAGAADQMEEMAACgYYIYAABAwwQxAACAhgliAAAADRPEAAAAGiaIAQAANEwQAwAAaJggBgAA0DBBDAAAoGGCGAAAQMMEMQAAgIYJYgAAAA0TxAAAABomiAEAADRMEAMAAGiYIAYAANAwQQwAAKBhghgAAEDDBDEAAICGCWIAAAANE8QAAAAaJogBAAA0TBADAABomCAGAADQMEEMAACgYYIYAABAwwQxAACAhgliAAAADRPEAAAAGiaIAQAANEwQAwAAaJggBgAA0DBBDAAAoGGCGAAAQMMEMQAAgIYJYgAAAA0TxAAAABomiAEAADRMEAMAAGiYIAYAANAwQQwAAKBhghgAAEDDBDEAAICGCWIAAAANW+uDWCllXCnliVLKrFLKyX3dHwAAgN6s1UGslNKW5IIk+yUZnuSwUsrwvu0VAABAz9bqIJZkbJJZtdbf1lpfT3J1kgP6uE8AAAA9KrXWvu7DO1ZKGZ9kXK31s63nRybZudZ6/NuOm5hkYuvph5I80WhH1zybJ1nQ151Ygxmf3hmjnhmfnhmf3hmjnhmf3hmjnhmf3q3vYzSk1rrFu/kG/d7NizegrKBtuWRZa704ycXvfnfWDqWUmbXWMX3djzWV8emdMeqZ8emZ8emdMeqZ8emdMeqZ8emdMXr3re1LE2cn2bbL88FJ5vRRXwAAAFbK2h7EfpFkWCllu1LKRkkOTXJDH/cJAACgR2v10sRa69JSyvFJbk7SluTSWuuv+7hbawPLNHtmfHpnjHpmfHpmfHpnjHpmfHpnjHpmfHpnjN5la3WxDgAAgLXR2r40EQAAYK0jiAEAADRMEAMAAGiYIAYAANCwtbpqIssrpZyaZJckS1tN/ZLc101bVtReaz21ib42aXWMS3ft6+J4dViVcTMO6/fnxxgt790ck+7a+3qs+uKe3+32vh7T3vh7unfGqGfGp+8IYuumQ2utLyZJKeWPk3y5m7bujl1XrY5xWZ/Gq8OqjNu6zOend8Zoee/mmKypY9UX97yuj2lv/D3dO2PUM+PTByxNBAAAaJggBgAA0DBBDAAAoGGCGAAAQMMEMQAAgIYJYgAAAA1Tvn7dMy/J5aWUt1rPN0gyvZu29NC+rlld47K+jFeHVR23dZXPT++M0fLe7TFZE8eqr+55XR7T3vh7unfGqGfGp4+UWmtf9wEAAGC9YmkiAABAwwQxAACAhgliAAAADRPEAAAAGqZqIgDrtFLKqUl2SbK01dQvyX3dtGVF7bXWU5voKwDrD0EMgPXBobXWF5OklPLHSb7cTVt3xwLAamVpIgAAQMMEMQAAgIYJYgAAAA0TxAAAABomiAEAADRMEAMAAGiY8vUArOvmJbm8lPJW6/kGSaZ305Ye2gFgtSm11r7uAwAAwHrF0kQAAICGCWIAAAANE8QAAAAaJogBAAA07P8DOcWLPGrHc1oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1008x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 行业工资水平画图\n",
    "bar = plt.bar(行业工资水平_前10['行业'],行业工资水平_前10[\"工资水平\",\"平均值\"].values, color='dodgerblue')\n",
    "bar[0].set_color('green')\n",
    "\n",
    "# 给条形图添加数据标注\n",
    "for x, y in enumerate(行业工资水平_前10[\"工资水平\",\"平均值\"].values):\n",
    "    plt.text(x-0.4, y+500, \"%s\" %y)\n",
    "\n",
    "plt.tick_params(labelsize=10)\n",
    "plt.xlabel('行业名')\n",
    "plt.ylabel([\"工资水平\",\"平均值\"])\n",
    "plt.title('各行业薪资平均水平')\n",
    "plt.rcParams['figure.figsize'] = (14, 7)\n",
    "# plt.rcParams['savefig.dpi'] = 100 #图片像素\n",
    "# plt.rcParams['figure.dpi'] = 100 #分辨率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
